Today there are essentially two types of applications: Web applications and traditional desktop or client applications. Web applications are a new type of software program that is commonly deployed as multiple Web pages accessible over the Internet. A conventional Web application includes multiple Web pages representing markup-based documents. The Web application may also include script or other resources that are accessed through the Web pages. Commonly, the Web app is stored on a Web server and downloaded to a local computer when used. Currently, it is not actually possible to download and install a typical Web app for subsequent use when the computer is offline.
Traditional desktop or client applications are software programs that are embodied largely if not exclusively in executable code, rather than HTML pages. Typically, desktop applications are installed directly to a local computer and execute on that computer. They execute with high permissions and typically take full advantage of the platform on which they are installed.
Both types of application have their own strengths and weaknesses. For instance, Web applications are easily installed and typically do not impact the local computer. Web applications provide users with an intuitive mechanism for navigating backward and forwards through the pages of the application. However, Web applications usually cannot take full advantage of the installed platform because they do not have sufficient execution permissions. Users commonly do not like the idea that an application so easily executed has full access to their computers.
In contrast, users commonly expect the traditional application to have heightened permissions because installing them is such a deliberate process. However, there is no way to limit the permissions under which a traditional application runs, so a user who chooses to install a traditional desktop application has to trust it completely. Also, once a user installs a traditional application, upgrades to the application are more difficult to obtain. Each time the user launches the application, the same version is executed, regardless of whether patches or upgrades to the application are available. Users often accept this tradeoff because the likelihood is significant that upgrading one traditional application may impact or disable another installed application.
These and other problems have faced software developers for some time. Until now, an adequate solution has eluded those skilled in the art.